/*-------------------------------------------------------------------------
 *
 * sinvaladt.h
 *	  POSTGRES 共享缓存失效数据管理器。
 *
 * 共享缓存失效管理器负责在后端之间传递失效消息。由任何后端发送的任何消息必须在被遗忘之前送达所有已运行的后端。（如果空间不足，我们会向落后太远的后端发送“重置”消息。）
 *
 * 结构类型 SharedInvalidationMessage 定义了单条消息的内容，详见 sinval.h。
 *
 * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/storage/sinvaladt.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef SINVALADT_H
#define SINVALADT_H

#include "storage/lock.h"
#include "storage/sinval.h"

/*
 * sinvaladt.c 中函数的原型
 */
extern Size SInvalShmemSize(void);
extern void CreateSharedInvalidationState(void);
extern void SharedInvalBackendInit(bool sendOnly);
extern PGPROC *BackendIdGetProc(int backendID);
extern void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin);

extern void SIInsertDataEntries(const SharedInvalidationMessage *data, int n);
extern int	SIGetDataEntries(SharedInvalidationMessage *data, int datasize);
extern void SICleanupQueue(bool callerHasWriteLock, int minFree);
extern void SIResetAll(void);

extern LocalTransactionId GetNextLocalTransactionId(void);

#endif							/* SINVALADT_H */
